home *** CD-ROM | disk | FTP | other *** search
/ Belgian Amiga Club - ADF Collection / BS1 part 05.zip / BS1 part 5 / SASC_6.0_Disk_1.adf / READ.ME < prev    next >
Text File  |  1992-07-30  |  15KB  |  314 lines

  1. *****************************************************************************   
  2.  
  3. SAS/C Version 6.0 should be installed from the WorkBench.  Double-click on
  4. the "Install-SASC" icon to run the installation program if you have not
  5. already done so.
  6.  
  7. *****************************************************************************   
  8.    
  9.   This read.me file contains major notes about changes to the product and 
  10.   to the documentation.  For a complete listing of all known errors in the 
  11.   documentation, see the help file sc:help/sc_change.guide.  If you installed
  12.   the on-line help, you can access this file through AmigaGuide as follows:
  13.    
  14.                sc:c/amigaguide sc:help/sc_changes.guide
  15.  
  16. *****************************************************************************
  17.  
  18. A. GENERAL NOTES:
  19.  
  20.    1. Since the compiler's executables are now AmigaDOS shared 
  21.       libraries, they remain in memory after your compile
  22.       finishes.  They will be automatically flushed out of 
  23.       memory if they are not in use and some other program 
  24.       needs the memory.  However, if you run out of fast
  25.       memory, the operating system starts using chip memory
  26.       before flushing the libraries.  Chip memory is much
  27.       slower than fast memory on Amigas with faster processors,
  28.       so this may slow down your program.
  29.       
  30.       If you think this is happening to you, and you are running
  31.       AmigaDOS 2.0, use the AVAIL command as follows to flush any 
  32.       shared libraries before running your program:
  33.       
  34.          avail flush
  35.  
  36.    2. New CPR option -nommu
  37.  
  38.       The -nommu option can be specified for CPR and CPRK.  It tells 
  39.       CPR not to use the Memory Management Unit (MMU) for any reason.
  40.       This option is only relevant for users with a 68020 or greater CPU.
  41.  
  42.       If your machine is running Enforcer and is 68020- or 68030-based, 
  43.       CPR will try to use the MMU by default to stop references to illegal 
  44.       memory.  For these machines, the -nommu option tells CPR not to 
  45.       verify memory in the MMU tables before trying to access it.  However, 
  46.       if Enforcer is running, you still will not be able to display illegal 
  47.       memory. 
  48.  
  49.       On 68040 machines, CPR doesn't use the MMU tables, but rather uses 
  50.       the TypeOfMem() call to determine if memory exists at that location.  
  51.       CPR was modified to act this way because reading illegal memory on a 
  52.       68040 may cause the machine to crash.  Unfortunatly, this method does 
  53.       not allow you to display ROM.  For the 68040, the -nommu option 
  54.       removes this restriction, allowing you to display ROM.  However, care 
  55.       should be taken in what memory is de-referenced or you could crash 
  56.       your machine.
  57.  
  58.    3. The format of bitfields has changed in version 6.0.  If you have a 
  59.       program that ran under version 5.10 or earlier that depends on the 
  60.       order of bitfields, it will no longer work.  
  61.  
  62.    4. Several help files have been added to the SAS/C Amigaguide
  63.       help system.  If you chose to install on-line help, all SAS/C help 
  64.       files are located in the directory sc:help.  
  65.  
  66.    5. You may find the example program schelp in the sc:help/examples/cback 
  67.       directory useful.  schelp is a background process which will allow you
  68.       to hit control-Help to pop up the main help window for the SAS/C
  69.       Amigaguide help system.  You will need to compile and link schelp
  70.       before you can use it.  Read the read.me file in sc:examples/cback for 
  71.       more information.
  72.  
  73.    6. By default, when you include the file proto/exec.h you get "syscall"
  74.       pragmas for all exec.library functions.  Another set of pragmas exists
  75.       for exec that use the "libcall" method via the library base SysBase.
  76.       Either set of pragmas will work.  The "syscall" pragmas find the 
  77.       address of exec.library by looking at memory location 4.  The 
  78.       "libcall" pragmas find it by looking at the external variable 
  79.       "SysBase".
  80.  
  81.       On Amigas with 68020 and higher processors, it is significantly faster
  82.       to use the "libcall" pragmas.  To do this, define the preprocessor 
  83.       symbol "__USE_SYSBASE" on the command line or by using a #define 
  84.       statement.  If you do this, make sure you include the file 
  85.       <proto/exec.h> rather than <pragmas/exec_pragmas.h>.  If you do this 
  86.       and you are not using one of the SAS/C supplied startup modules, you 
  87.       will have to initialize the variable SysBase yourself as follows:
  88.  
  89.          struct ExecBase *SysBase = *(struct ExecBase **)4;
  90.  
  91.    7. Two rexx macros were added after the documentation was completed.
  92.       They are sc:rexx/man.se and sc:rexx/man.cpr.  To use these macros:
  93.  
  94.       In CPR, type man <function> where <function> is any valid SAS/C 
  95.       library function.  This will automatically display a help screen 
  96.       from the sc_lib.guide help file for that function.
  97.  
  98.       In SE, place the cursor on the name of any valid SAS/C library 
  99.       function and hit shift-help.  This will automatically display a help
  100.       screen from the sc_lib.guide help file for that function.
  101.  
  102.  
  103. B. CHANGES IN THE USER'S GUIDE, VOLUME I
  104.  
  105.    1. Add the following to the end of the "Changes and Enhancements"
  106.       list on page xxviii, and to the description of the __interrupt
  107.       keyword on page 153:
  108.  
  109.          Unlike previous versions of the compiler, the __interrupt
  110.          keyword does not imply that the function will be called
  111.          with stack arguments.  If you use PARMS=REG and the function 
  112.          must receive its parameters on the stack, add the __stdargs 
  113.          keyword to its definition and prototype.
  114.  
  115.    2. On page 257, the following line should be added to the explanation 
  116.       for Error 625:
  117.   
  118.             If you are specifying the link option, you need to include the 
  119.             math= option to specify which math library with which you want 
  120.             to link.  If you are linking using SLink directly, you need to 
  121.             link with a math library as well as sc.lib.
  122.  
  123.    3. In the description of the OPTCOMPLEXITY, OPTDEPTH and OPTRDEPTH options
  124.       on pages 106-108, the default values for the three options are given
  125.       as 3.  The defaults are actually 0.  This means that by default the
  126.       global optimizer will not inline any functions unless they have been
  127.       explicitly declared with the __inline keyword.
  128.  
  129. C. CHANGES IN THE USER'S GUIDE, VOLUME II
  130.  
  131.    1. On page 41, the first example of the "go" command reads
  132.    
  133.          >go 4 when (i == 7)
  134.  
  135.       this should read
  136.  
  137.          >go 24 when(i == 7)      
  138.  
  139.    2. On page 76, the text mentions the fact that CPR will
  140.       by default open its own public screen, but it does
  141.       not give the name of this screen.  Unless otherwise
  142.       specified with the -SCREEN option, CPR opens a
  143.       public screen called "SC_CPR.1".
  144.  
  145.    3. On page 167, the description of the RESTART debugger
  146.       command states that watch breaks on static and external
  147.       data items will be retained after a RESTART.  This does
  148.       not work if the program being debugged was linked with
  149.       the "cres" or "catchres" startup modules and the watch
  150.       break is set on an item in the near data section.
  151.  
  152.    4. On page 247, in the description of the SCMSG command,
  153.       it states that SCMSG will be automatically invoked when
  154.       the compiler produces diagnostics.  You must specify the
  155.       ERRORREXX option to tell the compiler to do this.  If you
  156.       do not specify ERRORREXX, the SCMSG utility will not be
  157.       invoked.
  158.  
  159.    5. On page 258, the SCSETUP utility is documented.  Two new 
  160.       options have been added to this utility, FORCE and NOSTARTER.
  161.       If FORCE is specified, SCSETUP copies icons and files into
  162.       the directory whether or not they already exist.  Use this
  163.       option if you have a directory already set up for Version 5.10
  164.       of the compiler.  The NOSTARTER option tells SCSETUP not to
  165.       copy the contents of the drawer SC:STARTER_PROJECT to the
  166.       directory being set up.  Use this option to create icons for
  167.       files in a directory based on their extension when you do
  168.       not want the SCOptions, Edit, Debug and Build icons copied
  169.       into the directory.
  170.  
  171.    6. On page 333, there is a table of compiler options used to
  172.       enable or disable the optimizers.  Add the following entry
  173.       to this table:
  174.       
  175.       Option           Effect
  176.       --------         -------
  177.       optimize         turns on only the peephole optimizer
  178.       nooptglobal
  179.       
  180.       These options are discussed in more detail in Chapter 6
  181.       of the User's Guide, Volume I, along with the other
  182.       SC command-line options.
  183.  
  184.    7. On page 43, in the second listing of example code, the 4 on the
  185.       third and fourth lines should be 24, as follows:
  186.  
  187.                  > go 24 when (i ==7)
  188.                  sort:\Work:examples/sort.c\sort 24
  189.  
  190.    8. On page 51, in the bottom example, the definition of the breakpoint 
  191.       starting on the second line spans 2 input lines.  You must place a 
  192.       backslash (\) at the end of the first line.
  193.       
  194.                  > break sort 26 when (i > 5) {dump p L 4; \
  195.                      break sort 26 when (i == 8) trace; blist}
  196.  
  197.    9. On page 216, underscores are missing from two bulleted list items near
  198.       the middle of the page and from item 2 near the bottom.
  199.  
  200.       These lines should read:
  201.  
  202.                * The main routine must be called main rather than __main
  203.                  because covutil.o replaces __main with an enhanced 
  204.                  version.
  205.  
  206.                * Your program must end by calling exit or by falling 
  207.                  through the end of main.  (Do not call _XCEXIT or abort,
  208.                  for example.)
  209.  
  210.               2. ...The covutil.o file replaces the __main and __exit
  211.                  functions in your program with enhanced versions...
  212.  
  213.    10. On pages 276 and 278, in the example smakefiles, data=absolute 
  214.        should be data=far.
  215.  
  216. D. CHANGES IN THE LIBRARY REFERENCE MANUAL:
  217.  
  218.     1. A set of correction pages has been included for use with
  219.        the Library Reference manual.  Please be sure to apply
  220.        them to the manual as soon as possible.
  221.     
  222.     2. The description of the "getenv" function on page 251 states 
  223.        that only the first line of the file will be read.  In reality,
  224.        the entire file is read.
  225.     
  226.     3. The following external data names are not listed in the data
  227.        name reference (Chapter 6 of the Library Reference Manual):
  228.        
  229.        long __STKNEED;
  230.        
  231.           If your program uses the __stackext keyword or is compiled with
  232.           the STACKEXT compiler option, __STKNEED specifies the minimum 
  233.           amount of stack required.  Keep in mind that if a system interrupt
  234.           occurs, it will use your stack; therefore, you must keep at least 
  235.           400 bytes of stack free at all times.  The default value of 
  236.           __STKNEED is 400.  If your program requires more, declare 
  237.           __STKNEED in your code and statically initialize it to the amount 
  238.           you require.  You may change the value of __STKNEED while your
  239.           program is running if you like; if the current stack does not
  240.           meet the new __STKNEED value, a new one will be allocated the
  241.           next time you call a function declared with the __stackext 
  242.           keyword or compiled with the STACKEXT compiler option.  For more
  243.           information on the __STKNEED external variable, see Chapter 11
  244.           of the User's Guide, volume I.
  245.     
  246.        long __oslibversion;
  247.     
  248.           If you use the auto-open feature for system libraries, the
  249.           autoinitialization code passes the value of this external long
  250.           integer to the OpenLibrary function when attempting to open
  251.           each library.  For example, AmigaDOS 2.0 is library revision
  252.           37.  If your program runs only under AmigaDOS 2.0, you can 
  253.           declare it in your code as an external variable and initialize 
  254.           it to 37.  The autoopen libraries will not open if your program
  255.           is run under older versions of AmigaDOS; the library function
  256.           __autoopenfail will be called instead.  For more information on
  257.           auto-open libraries, see Chapter 10 of the User's Guide, volume I.
  258.     
  259.        char __stdiowin[] = "CON:10/10/320/80/";
  260.           
  261.           If your program is invoked from Workbench, a console window
  262.           will be opened to allow the standard I/O streams stdin, stdout
  263.           and stderr to function.  This variable specifies the character
  264.           string that will be passed to the AmigaDOS Open() function to
  265.           initialize this window.  You may change this specification
  266.           to change the appearance or behavior of the window by
  267.           declaring the array as shown above external to any function
  268.           in your code.  Under AmigaDOS 2.0, the array __stdiov37
  269.           will be appended to the __stdiowin string.  For more information
  270.           on __stdiowin, see Chapter 9 of the User's Guide, Volume I.
  271.     
  272.        char __stdiov37[] = "/AUTO/CLOSE/WAIT";
  273.     
  274.           If your program is invoked from Workbench, a console window
  275.           will be opened to allow the standard I/O streams stdin, stdout
  276.           and stderr to function.  This array will be appended to the
  277.           contents of the __stdiowin array if and only if the program
  278.           is invoked under kickstart version 37 or higher (AmigaDOS 2.0).
  279.           The AmigaDOS 2.0 console device supports special keywords that
  280.           enhance the behavior of the window.  The default string
  281.           specifies that the window should open only if your program
  282.           actually reads or writes data to it; that the window should
  283.           have a close gadget; and that the window should wait for the
  284.           user to hit the close gadget or type an end-of-file character
  285.           before closing.  You may change this specification if you like
  286.           by declaring the array as shown above external to any function
  287.           in your code.  For more information on __stdiov37, see Chapter 9
  288.           of the User's Guide, Volume I.
  289.     
  290.        __ctors and __dtors
  291.     
  292.           __ctors and __dtors are linker-created symbols which are arrays of
  293.           autoinitialization and autotermination functions to be invoked when
  294.           your program is started or after it exits.  Do not declare __ctors 
  295.           or __dtors in your code.  For more information on __ctors and 
  296.           __dtors, see Chapter 10 of the User's Guide, Volume I.
  297.     
  298.     4. The following should be added to Chapter 7 of the Library Reference
  299.        Manual:
  300.     
  301.        void __autoopenfail(char *lib);
  302.     
  303.           If you use the auto-open library feature for system libraries,
  304.           and one of the system libraries fails for some reason, the
  305.           function __autoopenfail will be called.  The parameter "lib"
  306.           points to a null-terminated string giving the name of the
  307.           library which failed to open.  The default version of this
  308.           function prints an error message and terminates your program.
  309.           You can declare a function matching the prototype above if 
  310.           you like and replace the default version.  The source code
  311.           to the default version of __autoopenfail is in the file
  312.           SC:SOURCE/autoopenfail.c.  For more information on auto-open
  313.           libraries, see Chapter 10 of the User's Guide, volume I.
  314.